#pragma once

#include <string>
#include <vector>
#include <map>

namespace xrtc {
    
class AudioCodecInfo;
class VideoCodecInfo;


// Rtcp相关的参数 rtcp-fb
class FeedbackParam {
public:
    FeedbackParam(const std::string& id, const std::string& param) : m_id(id), m_param(param) {}
    FeedbackParam(const std::string& id) : m_id(id), m_param("") {}

    std::string getId() const { return m_id; }
    std::string getParam() const { return m_param; }

private:
    std::string m_id;
    std::string m_param;
};

using CodeParam = std::map<std::string, std::string>; // 编解码参数

// 编解码信息的基类    
class CodecInfo {
public:
    virtual ~CodecInfo() = default;

    int m_id;
    std::string m_name;
    int m_clockrate; // 频率
    std::vector<FeedbackParam> m_feedback_params; // rtcp-fb参数
    CodeParam m_codec_param; // codec参数
};

// 音频编解码信息
class AudioCodecInfo : public CodecInfo {
public:
    int m_channels;
};

// 视频编解码信息
class VideoCodecInfo : public CodecInfo {
public:

};

} // namespace xrtc 